Skip to main content

Common Pandas Methods

๐Ÿ“ฆ Creating Data Structuresโ€‹

  • pd.Series() โ†’ 1D labeled array
pd.Series([10, 20, 30], index=["a", "b", "c"])
  • pd.DataFrame() โ†’ 2D labeled table
pd.DataFrame({"name": ["Alice"], "age": [25]})
  • pd.date_range() โ†’ sequence of dates
pd.date_range("2024-01-01", periods=12, freq="M")

๐Ÿ” Inspecting Dataโ€‹

  • .head(n) / .tail(n) โ†’ first / last n rows
df.head(10)
  • .info() โ†’ column dtypes, non-null counts, memory
df.info()
  • .describe() โ†’ summary statistics for numeric columns
df.describe()
  • .shape โ†’ (rows, columns)
df.shape
  • .dtypes โ†’ data types per column
df.dtypes
  • .columns โ†’ column labels
df.columns
  • .value_counts() โ†’ frequency of unique values
df["city"].value_counts()
  • .unique() / .nunique() โ†’ unique values / count
df["city"].unique()
df["city"].nunique()

๐ŸŽฏ Selection & Indexingโ€‹

  • .loc[] โ†’ label-based selection
df.loc["a":"c", ["name", "age"]]
  • .iloc[] โ†’ position-based selection
df.iloc[0:3, 0:2]
  • .at[] / .iat[] โ†’ fast scalar access
df.at[0, "name"]
df.iat[0, 1]
  • .query() โ†’ readable filtering
df.query("age > 30 and city == 'Lagos'")
  • .set_index() / .reset_index() โ†’ change index
df.set_index("name")
df.reset_index()
  • .sort_values() / .sort_index() โ†’ sorting
df.sort_values("age", ascending=False)
df.sort_index()

๐Ÿงน Data Cleaningโ€‹

  • .isnull() / .notnull() โ†’ detect missing values
df.isnull().sum()
  • .dropna() โ†’ drop missing values
df.dropna(subset=["age"])
  • .fillna() โ†’ fill missing values
df.fillna(0)
df["age"].fillna(df["age"].mean())
  • .interpolate() โ†’ interpolate missing values
df["price"].interpolate()
  • .duplicated() / .drop_duplicates() โ†’ handle duplicates
df.drop_duplicates(subset=["email"])
  • .astype() โ†’ change data type
df["age"].astype(int)
  • pd.to_datetime() โ†’ parse dates
pd.to_datetime(df["date"])
  • pd.to_numeric() โ†’ convert to numeric (coerce errors)
pd.to_numeric(df["revenue"], errors="coerce")
  • .str accessor โ†’ string operations
df["name"].str.strip().str.lower()
df["phone"].str.replace("-", "")
df["name"].str.split(" ", expand=True)
  • .replace() โ†’ replace values
df["gender"].replace({"M": "Male", "F": "Female"})
  • .clip() โ†’ clip values to range
df["age"].clip(0, 120)

๐Ÿ”„ Transforming Dataโ€‹

  • .apply() โ†’ apply function to column/row
df["age"].apply(lambda x: "Adult" if x >= 18 else "Child")
df.apply(lambda row: row["a"] + row["b"], axis=1)
  • .map() โ†’ element-wise mapping
df["country"].map({"Nigeria": "NG", "Ghana": "GH"})
  • .assign() โ†’ add columns (chainable)
df.assign(profit=lambda x: x["revenue"] - x["cost"])
  • pd.cut() โ†’ bin continuous data
pd.cut(df["age"], bins=[0, 18, 60, 100], labels=["Child", "Adult", "Senior"])
  • pd.qcut() โ†’ quantile-based binning
pd.qcut(df["score"], q=4, labels=["Q1", "Q2", "Q3", "Q4"])
  • np.where() / np.select() โ†’ conditional columns
np.where(df["score"] >= 80, "pass", "fail")

๐Ÿ“Š Aggregation & Groupingโ€‹

  • .groupby() โ†’ group data
df.groupby("dept")["salary"].mean()
  • .agg() โ†’ multiple aggregations
df.groupby("dept").agg(avg_salary=("salary", "mean"), count=("name", "count"))
  • .transform() โ†’ group-level values, original shape
df.groupby("dept")["salary"].transform("mean")
  • .filter() โ†’ keep/drop groups
df.groupby("dept").filter(lambda g: len(g) > 1)
  • .sum(), .mean(), .median(), .min(), .max(), .count(), .std(), .nunique()
df["salary"].sum()

๐Ÿ”— Merging & Joiningโ€‹

  • pd.concat() โ†’ stack DataFrames
pd.concat([df1, df2], ignore_index=True)
pd.concat([df1, df2], axis=1)
  • pd.merge() โ†’ SQL-style joins
pd.merge(df1, df2, on="key")
pd.merge(df1, df2, on="key", how="left")
pd.merge(df1, df2, left_on="id", right_on="key")
  • .join() โ†’ index-based join
df1.join(df2)

๐Ÿ”€ Reshapingโ€‹

  • .pivot() โ†’ long to wide
df.pivot(index="date", columns="product", values="sales")
  • .pivot_table() โ†’ pivot with aggregation
df.pivot_table(index="date", columns="product", values="sales", aggfunc="sum")
  • .melt() โ†’ wide to long
df.melt(id_vars="name", var_name="subject", value_name="score")
  • .stack() / .unstack() โ†’ move index levels
df.stack()
df.unstack()
  • .explode() โ†’ one row per list element
df.explode("tags")
  • pd.crosstab() โ†’ frequency table
pd.crosstab(df["gender"], df["city"])

โฐ Time Seriesโ€‹

  • pd.to_datetime() โ†’ parse dates
pd.to_datetime(df["date"])
  • .dt accessor โ†’ extract date components
df["date"].dt.year
df["date"].dt.month
df["date"].dt.day_name()
  • .resample() โ†’ change frequency
df.resample("M")["revenue"].sum()
  • .rolling() โ†’ rolling window
df["revenue"].rolling(window=7).mean()
  • .expanding() โ†’ expanding window
df["revenue"].expanding().sum()
  • .shift() โ†’ lag/lead values
df["revenue"].shift(1)
  • .diff() / .pct_change() โ†’ period-over-period change
df["revenue"].diff(1)
df["revenue"].pct_change(1)

๐Ÿ’พ Input / Outputโ€‹

  • pd.read_csv() / .to_csv() โ†’ CSV
pd.read_csv("data.csv", parse_dates=["date"])
df.to_csv("output.csv", index=False)
  • pd.read_excel() / .to_excel() โ†’ Excel
pd.read_excel("data.xlsx", sheet_name="Sales")
df.to_excel("output.xlsx", index=False)
  • pd.read_json() / .to_json() โ†’ JSON
pd.read_json("data.json")
df.to_json("output.json", orient="records")
  • pd.read_sql() / .to_sql() โ†’ SQL
pd.read_sql("SELECT * FROM orders", engine)
df.to_sql("orders", engine, if_exists="replace")
  • pd.read_parquet() / .to_parquet() โ†’ Parquet
pd.read_parquet("data.parquet")
df.to_parquet("data.parquet", index=False)

๐Ÿ“ˆ Visualizationโ€‹

  • .plot() โ†’ basic line plot
df["revenue"].plot(title="Revenue")
  • .plot(kind="bar") โ†’ bar chart
df.groupby("region")["sales"].sum().plot(kind="bar")
  • .plot(kind="hist") โ†’ histogram
df["age"].plot(kind="hist", bins=20)
  • .plot(kind="scatter") โ†’ scatter plot
df.plot(kind="scatter", x="age", y="salary")
  • .plot(kind="box") โ†’ box plot
df[["salary", "bonus"]].plot(kind="box")
  • .plot(kind="area") โ†’ area chart
df.plot(kind="area", x="date", y=["a", "b"])
  • .plot(kind="pie") โ†’ pie chart
df.groupby("category")["sales"].sum().plot(kind="pie")
  • .plot(subplots=True) โ†’ multiple subplots
df[["revenue", "cost"]].plot(subplots=True)

โšก Performanceโ€‹

  • .memory_usage() โ†’ memory per column
df.memory_usage(deep=True)
  • pd.to_numeric(downcast=...) โ†’ downcast numeric types
pd.to_numeric(df["age"], downcast="integer")
  • .astype("category") โ†’ categorical for low-cardinality strings
df["country"].astype("category")
  • .copy() โ†’ explicit copy (avoid SettingWithCopyWarning)
df[df["age"] > 30].copy()
  • .eval() โ†’ fast expression evaluation
df.eval("profit = revenue - cost")